import json
import jsonpath
import os
import sys
import util

data = os.getenv('JIANMU_DATA')
expression = os.getenv('JIANMU_EXPRESSION')
file = os.getenv('JIANMU_FILE')
data_type = os.getenv('JIANMU_TYPE')

# 校验
if not expression or expression.isspace():
    print('error: 表达式不能为空')
    sys.exit(1)
if file and data:
    print('error: 输入参数 data 和 file 不能同时存在')
    sys.exit(1)
if not file and not data:
    print('error: 输入参数 data 和 file 至少输入一个')
    sys.exit(1)
if not data_type:
    print('error: type类型错误，请输入正确的type (json/yml)')
    sys.exit(1)

# 解析data数据
if data_type == 'json':
    if data:
        data = util.to_json(data)
    else:
        data = util.to_json(util.read_json(file))
elif data_type == 'yml':
    if data:
        data = util.to_yml_json(data)
    else:
        data = util.read_yml(file)
else:
    print('error: type类型错误，请输入正确的type (json/yml)')
    sys.exit(1)

# 打印日志
print("表达式：", expression)
print()
print('数据：')
print(json.dumps(data, ensure_ascii=False, indent=4))

result = jsonpath.jsonpath(data, expression)
if type(result) == list:
    if len(result) == 1:
        result = result[0]
    if type(result) != str:
        result = str(json.dumps(result, ensure_ascii=False))
else:
    print()
    print('error: 未提取到参数，请检查表达式')
    sys.exit(1)
result_data = {
    "result": result
}

json = json.dumps(result_data, ensure_ascii=False, indent=4)
with open('/usr/result_file', 'w') as f:
    f.write(json)
print()
print("结果：")
print('result_file:', json)
